Rundeck: 任意のタイムゾーン設定によるサーバ稼働を試してみる
しんやです。来月新作第7弾が公開されると言う事で『スターウォーズ』過去の総復習を計画・実践中です。先日エピソード4を観終えました。『エピソード4』くらいは過去に観てたかな〜と思ってたのですがどうやら全6作共にフル視聴はしていなかった事が判明しました。『エピソード7』公開前で後1ヶ月ちょいありますが、公開日に間に合うように総復習を進めて行きたいと思います。
さて、本題です。先日、ジョブ管理ツールの1つである『Rundeck』に関するエントリが弊社ブログにて紹介されていましたが、私自身もこのサービスに非常に興味を持つようになり、『Rundeckってこういうケースは対応してるのかな?出来るのかな?』という形で自分が実践で使う事を想定したトピックで調査してみたいなと思うようになりました。
当エントリでは、『Rundeckって所定のタイムゾーン(例えば日本国内、Asia/Tokyoで)で使えるものなの?』という思い付きを調査した内容についてご紹介したいと思います。
目次
導入環境を用意/Amazon EC2(Linux)
Rundeckのインストール環境はAmazon EC2(Linux)を用意します。今回は管理コンソールからAmazon Linux AMIを選択し、15GB程度のストレージ容量(この辺はひとまず適当)と、ポート番号:22,4440,4443(4440と4443はRundeckで指定されているHTTP/HTTPSアクセス用のポート)からの外部アクセスを許可したセキュリティグループを備えた環境を用意しました。
インスタンスが用意出来たらSSHコマンドでログインしておきます。
$ ssh -i xxxxxxxxxxxx.pem ec2-user@xxx.xx.xx.xxx
Rundeck導入手順
基本的な導入手順については下記のエントリに倣った形となります。
サーバのタイムゾーン設定を変更
まず始めに稼働サーバのタイムゾーンをデフォルトのUTCから今回検証・利用したいタイムゾーン(アジア/東京)に変更しておきます。所定ファイルの上書き・変更の後、crondを再起動させる事でタイムゾーンの変更が行えます。
$ date 2015年 11月 11日 水曜日 04:57:12 UTC $ sudo cp /usr/share/zoneinfo/Japan /etc/localtime $ sudo vi /etc/sysconfig/clock ZONE="Asia/Tokyo" UTC=False $ sudo /etc/init.d/crond restart crond を停止中: [ OK ] crond を起動中: [ OK ] $ $ date 2015年 11月 11日 水曜日 13:58:43 JST
Javaインストール
次いでJavaの環境を整えます。Amazon Linuxの場合、インスタンス構築・起動時点で既にOpenJDKは入っていますが、
$ java -version java version "1.7.0_91" OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
今回は以下のエントリを使ってOracleJDKの最新版を入れてみたいと思います。細かい手順についてはエントリ本編をご参照ください。
$ sudo yum -y remove java $ vi cookies.txt $ wget --load-cookies cookies.txt -O jdk-8-linux-x64.rpm http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm $ sudo rpm -ivh jdk-8-linux-x64.rpm
Oracle JDKの1.8を入れ直す事が出来ました。
$ java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
Rundeckインストール
こちらはドキュメント通りの手順で導入。
$ sudo rpm -Uvh http://repo.rundeck.org/latest.rpm $ sudo yum -y install rundeck
Rundeck起動設定の一部変更
Rundeckのタイムゾーン指定に関する情報を調べていくと、以下のGitHub Issueが引っ掛かりました。全てのビューでタイムゾーン指定の部分をカスタマイズするというものらしいです。こちらもインストール直後の対象ファイル該当箇所を修正しておきます。
$ sudo vi /etc/init.d/rundeckd #!/bin/bash # # rundeckd Startup script for the rundeck # # chkconfig: 2345 90 10 # description: rundeckd, providing rundeckd # pidfile: /var/run/rundeckd.pid # Source function library . /etc/rc.d/init.d/functions . /etc/rundeck/profile prog="rundeckd" #rundeckd="${JAVA_HOME:-/usr}/bin/java ${RDECK_JVM} -cp ${BOOTSTRAP_CP} com.dtolabs.rundeck.RunServer /var/lib/rundeck ${RDECK_HTTP_PORT}" rundeckd="${JAVA_HOME:-/usr}/bin/java ${RDECK_JVM} -cp ${BOOTSTRAP_CP} -Duser.timezone=Asia/Tokyo com.dtolabs.rundeck.RunServer /var/lib/rundeck ${RDECK_HTTP_PORT}" RETVAL=0 PID_FILE=/var/run/${prog}.pid servicelog=/var/log/rundeck/service.log :
アクセス対象となるサーバのドメイン部分に関する部分も所定の内容(ドメイン名やIPアドレス等)に書き換えておきます。
$ sudo vi /etc/rundeck/rundeck-config.properties #loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG loglevel.default=INFO rdeck.base=/var/lib/rundeck #rss.enabled if set to true enables RSS feeds that are public (non-authenticated) rss.enabled=false # change hostname here #grails.serverURL=http://localhost:4440 grails.serverURL=http://xxx.xx.xx.xxx:4440 dataSource.dbCreate = update dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4
動作確認
諸々の設定が済んだところでRundeckを起動させます。また併せて自動起動設定も行っておきます。
$ sudo chkconfig rundeckd on $ sudo /etc/init.d/rundeckd start rundeckd を起動中: [ OK ]
ログイン及びプロジェクト作成まで済ませ、ジョブの作成で実行時間・サイクルの指定箇所へと進めてみます。スクリーンショットの取得タイミングが少し遅れてしまったため初期設定時間<Macのシステム時間(即ちAsia/Tokyoのシステム時刻)となってしまっていますが、こちらのタイムゾーンを元にした時間が初期設定された形の挙動となっている事が確認出来ました。
2分後位のタイミングが来たら起動するような時間設定のジョブを作成してみました。ちゃんと残り時間もそれに合わせた時間表示となっています。
処理実行後のジョブ一覧画面です。表示時間がAsia/Tokyoのものになっています。
実行ログ詳細の中身です。ジョブとしてはdateコマンドを実行するだけのシンプルなものを設定しました。実行時刻に関する部分、実行結果(Asia/Tokyoのタイムゾーン設定を行ったサーバ環境下でのdateコマンド実行結果)も期待した内容が表示されています。
ちなみにシステム情報を表示する画面内の該当箇所の時間についてはUTF表記のままでした。こちらについてはUTFのままである事は気にはなりますが、実作業を行なう上で影響無いようであれば差し当たりこのままでも大丈夫かなという気はします。
まとめ
以上、RundeckのTimezone指定に関する設定値の変更及び確認作業に関するエントリでした。当初、Rundeckインストール後に該当箇所の変更を行ってみたところ変更されていない部分が見られ(時間指定のプルダウンの部分)、もしかしたらRundeckインストール時の環境で進めてしまった為(タイムゾーン:UTFのまま進めちゃってた)にこの部分が変わらなかったのかな?と思い当エントリ記載の順序で進めてみたところ、予想が当たったのでまとめられる形になった、という次第です。解決してみればどうってこと無いネタでしたが、これで日本国内での時間サイクル管理下でRundeckを活用する事が出来そうです。こちらからは以上です。